package com.shuda.business.crm.entity;

import com.baomidou.mybatisplus.annotation.*;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.v3.oas.annotations.media.Schema;

import java.time.LocalDateTime;

/**
 * 跟进记录实体类
 */
@TableName("t_follow_up_record")
@Schema(description = "跟进记录实体")
public class FollowUpRecordEntity {

    @TableId(type = IdType.AUTO)
    @Schema(description = "记录ID")
    private Long id;

    @Schema(description = "客户ID")
    private Long customerId;

    @Schema(description = "客户姓名")
    private String customerName;

    @Schema(description = "客户手机号")
    private String customerPhone;

    @Schema(description = "跟进方式")
    private String followUpMethod;

    @Schema(description = "跟进内容")
    private String followUpContent;

    @Schema(description = "跟进结果")
    private String followUpResult;

    @Schema(description = "客户意向")
    private String customerIntention;

    @Schema(description = "下次跟进时间")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private LocalDateTime nextFollowUpTime;

    @Schema(description = "跟进人ID")
    private Long followUpUserId;

    @Schema(description = "跟进人姓名")
    private String followUpUserName;

    @Schema(description = "跟进时间")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private LocalDateTime followUpTime;

    @Schema(description = "通话时长（秒）")
    private Integer callDuration;

    @Schema(description = "录音文件路径")
    private String recordingFile;

    @Schema(description = "是否预约")
    private Boolean isAppointment;

    @Schema(description = "预约时间")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private LocalDateTime appointmentTime;

    @Schema(description = "是否成交")
    private Boolean isDeal;

    @Schema(description = "成交金额")
    private String dealAmount;

    @Schema(description = "备注")
    private String remark;

    @TableField(fill = FieldFill.INSERT)
    @Schema(description = "创建人ID")
    private Long createBy;

    @TableField(fill = FieldFill.INSERT)
    @Schema(description = "创建时间")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private LocalDateTime createTime;

    @TableField(fill = FieldFill.UPDATE)
    @Schema(description = "更新人ID")
    private Long updateBy;

    @TableField(fill = FieldFill.UPDATE)
    @Schema(description = "更新时间")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private LocalDateTime updateTime;

    @TableLogic
    @Schema(description = "删除标志")
    private Integer deleted;

    @Schema(description = "租户ID")
    private Long tenantId;

    /**
     *
     * FollowUpRecordEntity 访问器
     * @param $params$
     * @return $returns$
     * @author ink
     * @Description: 显式getter/setter，移除Lombok依赖
     * @date 2025-11-10 00:12
     */
    public Long getId() { return id; }
    public void setId(Long id) { this.id = id; }

    public Long getCustomerId() { return customerId; }
    public void setCustomerId(Long customerId) { this.customerId = customerId; }

    public String getCustomerName() { return customerName; }
    public void setCustomerName(String customerName) { this.customerName = customerName; }

    public String getCustomerPhone() { return customerPhone; }
    public void setCustomerPhone(String customerPhone) { this.customerPhone = customerPhone; }

    public String getFollowUpMethod() { return followUpMethod; }
    public void setFollowUpMethod(String followUpMethod) { this.followUpMethod = followUpMethod; }

    public String getFollowUpContent() { return followUpContent; }
    public void setFollowUpContent(String followUpContent) { this.followUpContent = followUpContent; }

    public String getFollowUpResult() { return followUpResult; }
    public void setFollowUpResult(String followUpResult) { this.followUpResult = followUpResult; }

    public String getCustomerIntention() { return customerIntention; }
    public void setCustomerIntention(String customerIntention) { this.customerIntention = customerIntention; }

    public LocalDateTime getNextFollowUpTime() { return nextFollowUpTime; }
    public void setNextFollowUpTime(LocalDateTime nextFollowUpTime) { this.nextFollowUpTime = nextFollowUpTime; }

    public Long getFollowUpUserId() { return followUpUserId; }
    public void setFollowUpUserId(Long followUpUserId) { this.followUpUserId = followUpUserId; }

    public String getFollowUpUserName() { return followUpUserName; }
    public void setFollowUpUserName(String followUpUserName) { this.followUpUserName = followUpUserName; }

    public LocalDateTime getFollowUpTime() { return followUpTime; }
    public void setFollowUpTime(LocalDateTime followUpTime) { this.followUpTime = followUpTime; }

    public Integer getCallDuration() { return callDuration; }
    public void setCallDuration(Integer callDuration) { this.callDuration = callDuration; }

    public String getRecordingFile() { return recordingFile; }
    public void setRecordingFile(String recordingFile) { this.recordingFile = recordingFile; }

    public Boolean getIsAppointment() { return isAppointment; }
    public void setIsAppointment(Boolean isAppointment) { this.isAppointment = isAppointment; }

    public LocalDateTime getAppointmentTime() { return appointmentTime; }
    public void setAppointmentTime(LocalDateTime appointmentTime) { this.appointmentTime = appointmentTime; }

    public Boolean getIsDeal() { return isDeal; }
    public void setIsDeal(Boolean isDeal) { this.isDeal = isDeal; }

    public String getDealAmount() { return dealAmount; }
    public void setDealAmount(String dealAmount) { this.dealAmount = dealAmount; }

    public String getRemark() { return remark; }
    public void setRemark(String remark) { this.remark = remark; }

    public Long getCreateBy() { return createBy; }
    public void setCreateBy(Long createBy) { this.createBy = createBy; }

    public LocalDateTime getCreateTime() { return createTime; }
    public void setCreateTime(LocalDateTime createTime) { this.createTime = createTime; }

    public Long getUpdateBy() { return updateBy; }
    public void setUpdateBy(Long updateBy) { this.updateBy = updateBy; }

    public LocalDateTime getUpdateTime() { return updateTime; }
    public void setUpdateTime(LocalDateTime updateTime) { this.updateTime = updateTime; }

    public Integer getDeleted() { return deleted; }
    public void setDeleted(Integer deleted) { this.deleted = deleted; }

    public Long getTenantId() { return tenantId; }
    public void setTenantId(Long tenantId) { this.tenantId = tenantId; }
}